Шаг 15 - Что такое статический класс в классическом понятии.

Мы сейчас посмотрим на примере Borland C++ для DOS. Так понятнее, для нас главное идея. А в следующем шаге посмотрим, как работает то же самое в управляемом коде. Объявим класс и создадим объект.

class CMyClass
{
public:
CMyClass();
int x;
char c;
};

CMyClass::CMyClass()
{
x=5;
c='a';
}

void main()
{
CMyClass s;

}

И соберем проект. Я поставил оптимизацию по скорости. Смотрим размер.

15_1.gif (2603 b)

Теперь объявим массив классов.

CMyClass s[100];

и опять смотрим размер.

15_2.gif (1264 b)

Изменился но не значительно. Правильно, это не статический класс. Хотя выглядит похоже. BC++ за нашей спиной производит всякие манипуляции. Статический класс этот тот класс память под который находиться внутри модуля EXE. Изменим класс модификатором static.

static CMyClass s[100];

И посмотрим свойства.

15_3.gif (1247 b)

Другое дело. Мы даже место можем увидеть если посмотрим EXE в блокноте.

15_4.gif (1109 b)

Не верите? Объявите массив int в классе.

class CMyClass
{
public:
CMyClass();
int x[100];
char c;
};

И опять посмотрите.

15_5.gif (4277 b)

Вот оно. В MS DOS это место было ограничено и нельзя было создать большой массив. Так вот практически все классы которые Вы создаете в VC++ по факту динамические, потому что в динамической памяти находятся даже если Вы не используете NEW.

Hosted by uCoz